# -*- coding:utf-8 -*-
__author__ = 'wangjvv'
'''
date: 2020/9/23
description: 处理各种数据问题
'''

class HandleAssert():

    def __init__(self):
        pass

    def oprateExceptResult(self,result):
        '''
        处理Excel中的预期结果字段，将其处理为字典的键
        '''
        if isinstance(result,str):
            resultData = result.split(':')  #将预期结果中的字符串切割 ‘:’
            try:
                key = resultData[0].split('.')  #预期结果存在多个键时，使用'.'切割
            except:
                key = [resultData[0]] #预期结果中存在一个键时，直接返回
        else:
            raise TypeError
        return key,resultData[1] # 返回处理后的字段

    def assertData(self,exceptResult,realResult):
        '''
        断言：判断预期结果中的字段是否与实际结果中的一致
        '''
        info = self.oprateExceptResult(exceptResult)  #info为处理后的数据，包含key和具体的内容
        for i in info[0]:

            realResult = realResult[i]

        if info[1] == realResult:  #判断预期结果是否与实际结果中的值一致
            return 'PASS',realResult
        else:
            return 'FAIL',realResult


Assert = HandleAssert()
if __name__ == '__main__':
    result = {'data':{'abc':123,'message':{'info':'数据获取完成！'}}}
    testdata = 'data.message.info:数据获取完成！'

    info = Assert.oprateExceptResult(testdata)
    print(info)
    testresult = Assert.assertData(testdata,result)
    print(testresult)

